# 系统编程二：
# 打电话业务逻辑
# 人类：
# 属性:姓名，性别，年龄，所拥有的手机剩余话费，手机品牌，手机电池容量，手机屏幕大小，手机最大待机时长，所拥有的积分。
# 功能：
# 发短信（要求参数传入短信内容）。
# 打电话（要求传入要打的电话号码和要打的时间长度。程序里判断号码是否为空或者本人的话费是否小于1元，若为空或者小于1元则报相对应的错误信息，否则的话拨通。结束后，按照时间长度扣费并返回扣费并且按照分钟给手机卡累加积分（0~10分钟：1元/钟、15个积分/钟，10~20分钟：0.8元/钟、39个积分/钟，其他：0.65元/钟、48个积分/钟））

class Human:
    def __init__(self, name, sex, age, phone_number, phone_brand, phone_battery_capacity, phone_screen_size,
                 phone_max_standby_time, phone_integral):
        self.name = name
        self.sex = sex
        self.age = age
        self.phone_number = phone_number
        self.phone_brand = phone_brand
        self.phone_battery_capacity = phone_battery_capacity
        self.phone_screen_size = phone_screen_size
        self.phone_max_standby_time = phone_max_standby_time
        self.phone_integral = phone_integral

    def send_message(self, message):
        print(f"{self.name} 发送了短信：{message}")

    def call(self, phone_number, time_length):
        if not phone_number:
            print("电话号码不能为空")
            return

        if self.phone_integral < 1:
            print("话费不足，请充值")
            return

        print(f"{self.name} 正在拨打电话 {phone_number}，时长为 {time_length} 分钟")

        if time_length <= 10:
            cost = time_length * 1
            self.phone_integral += time_length * 10
        elif time_length<= 20:
            cost = time_length * 0.8
            self.phone_integral += time_length * 39
            self.phone_integral += time_length * 48
        self.phone_integral -= cost
        print(f"通话结束，花费 {cost} 元，剩余积分 {self.phone_integral}")
        print(f"{self.name} 的手机卡剩余为 {self.phone_battery_capacity}")


if __name__ == '__main__':
    human = Human("张三", "男", 30, "1234567890", "华为", 100, 6.5, 120, 1000)
    human.send_message("你好")
    human.call("1234567890", 10)
    human.call("", 10)
    human.call("1234567890", 20)